/**
 * Description:
 * Class Name:IdentityHashCodeTest
 * Date:2022/2/17 13:17
 *
 * @author LTisme
 * @version JAVA17
 */
package 疯狂Java讲义.第7章_Java基础类库._7_2_系统相关._7_2_1_System类;

public class IdentityHashCodeTest {
    public static void main(String[] args) {
        // 下面程序中s1和s2是两个不同的对象
        var s1 = new String("Hello");
        var s2 = new String("Hello");
        // String是重写了Object类的实例hashCode()方法——改为根据字符序列计算hashCode值
        // 因为s1和s2的字符序列相同，所以它们的hashCode()方法返回值相同
        System.out.println(s1.hashCode() + "------------" + s2.hashCode());

        // s1和s2是不同的字符串对象，所以它们的identityHashCode值不同
        System.out.println(System.identityHashCode(s1) + "------------" + System.identityHashCode(s2));

        var s3 = "Java";
        var s4 = "Java";
        // s3，s4都是引用的Java字符串常量池的同一个对象，所以它们的identityHashCode相同
        System.out.println(System.identityHashCode(s3) + "------------" + System.identityHashCode(s4));
    }
}
